package Mapa;

import Objetos.*;
import TDA_Mapeo.*;

import javax.swing.*;

public class Mapeo_Objetos {
	protected Map<Character, Objeto> mapeo;
	
	/**Crea un mapeo de objetos. */
	public Mapeo_Objetos() {
		mapeo = new Mapeo_HashAbierto<Character, Objeto>(30);
		cargarMapeo();
	}
	
	/**Carga el mapeo con todos los tipos de objetos existentes en el mapa. */
	protected void cargarMapeo() {
		Objeto e;
		Item i;
		Character X;
		
		// 'C' = Castillo
		X = new Character('C');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/castillo.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: castillo");
		}
		
		// 'Z' = Mastil
		X = new Character('Z');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/mastil2.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: mastil");
		}
		
		// 'X' = Piso
		X = new Character('X');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/piso.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: piso");
		}
		
		X = new Character('a');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/piso.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: piso");
		}
	
		X = new Character('b');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/piso2.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: piso");
		}
		
		
		X = new Character('c');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/piso3.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: piso");
		}
		
		
		X = new Character('d');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/piso4.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: piso");
		}
		
		
		X = new Character('e');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/piso5.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: piso");
		}
		
		
		X = new Character('f');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/piso6.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: piso");
		}
		
		// 'B' = Bloque irrompible
		X = new Character('B');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/bloque.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: bloque");
		}
		
		// 'M' = Bloque moneda
		X = new Character('M');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/pregunta.png")));
		i = new Moneda();
		i.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/moneda.gif")));
		e.setItem(i);
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: moneda");
		}
		
		// 'R' = Bloque hongo rojo
		X = new Character('R');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/pregunta.png")));
		i = new Hongo_Rojo();
		i.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/hongo_rojo.gif")));
		e.setItem(i);
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: hongo rojo");
		}
		
		// 'V' = Bloque hongo verde
		X = new Character('V');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/pregunta.png")));
		i = new Hongo_Verde();
		i.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/hongo_verde.gif")));
		e.setItem(i);
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: hongo verde");
		}
		
		X = new Character('E');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/pregunta.png")));
		i = new Estrella();
		i.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/estrella.gif")));
		e.setItem(i);
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: hongo verde");
		}
		
		X = new Character('F');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/pregunta.png")));
		i = new Flor_de_Fuego();
		i.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/flor.gif")));
		e.setItem(i);
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: flor de fuego");
		}
		
		X = new Character('Y');
		e = new Bloque();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/pregunta.png")));
		i = new Bomba_Nuclear();
		i.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/misil2.png")));
		e.setItem(i);
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: bombaNuclear");
		}
		
		// 'L' = Ladrillo
		X = new Character('L');
		e = new Ladrillo();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/ladrillo.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: ladrillo");
		}
		
		// 'S' = Tubo
		X = new Character('S');
		e = new Ladrillo();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/tubo1.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: tubo1");
		}
		
		// 'T' = Tubo2
		X = new Character('T');
		e = new Ladrillo();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/tubo2.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: tubo2");
		}
		
		//'s' = Tubo3
		X = new Character('s');
		e = new Ladrillo();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/tubo3.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: tubo3");
		}
		
		//'t' = Tubo4
		X = new Character('t');
		e = new Ladrillo();
		e.getRG().modificarImagen(new ImageIcon(getClass().getResource("/Imagenes/Objetos/tubo4.png")));
		try {
			mapeo.put(X, e);
		} 
		catch (InvalidKeyException e1) {
			System.out.println("Mapeo_Objetos :: cargarMapeo() :: tubo4");
		}
		
	}
	
	/**Devuelve el objeto con clave key. */
	public Objeto get( Character key ){
		try {
			return mapeo.get(key);
		}
		catch (InvalidKeyException e) {
			System.out.println("Mapeo_Objetos :: get()");
			return null;
		}
	}
}
